package code06_数组;

import java.util.Arrays;

/**
 * @author 黄衡熙
 * @version 1.0
 * @date 2025年07月18日9:27
 */
public class Test11_不定长参数 {

    public static void main(String[] args) {
        System.out.println(sum(new int[]{1, 2, 3, 4, 5}));
        System.out.println(sum2(1, 2, 3, 4, 5));
        // 当调用的方法参数是一个可变长参数时,可以不传递参数
        test();
        // 也可以传递一个参数
        test(1);
        // 还可以传递无数个参数
        test(1, 2, 3, 4, 5, 6, 8, 9, 0, 10, 11);
    }

    public static int sum(int[] arr) {
        int sum = 0;
        for (int i = 0; i < arr.length; i++) {
            sum += i;
        }
        return sum;
    }

    // 在定义方法的时候,无法知道在调用时具体会传递几个参数
    // 此时参数可以没有,也可以只有一个,还能存在多个
    public static int sum2(int... arr) {
        // 此处的params属于不定长参数,它是一种特殊的数组,用法与数组基本一致
        int sum = 0;
        for (int i = 0; i < arr.length; i++) {
            sum += i;
        }
        return sum;
    }

    public static void test(int... params) {
        System.out.println(Arrays.toString(params));
    }

    // 在使用不定长参数作为方法的参数时,存在一些限制
    // 1.一个方法最多只能存在一个不定长参数
    // public static void show(String... params,int... arr){}  报错
    // 2.不定长参数只能处于参数列表中的最后一个位置
    // public static void show(int... arr,String name){}   报错
    // 不定长参数属于特殊的数组,因此凡是数组支持的方法,不定长参数都能使用
}